// pages/films/index.js
Page({
    regexTest(){ //正则表达式的编程测试
		let s = 'a123 www  bbb456 999 ccc789';
		let r, regex = /([a-z]+)(\d+)/g;
		while (r = regex.exec(s)) {
			console.log(r);
		}
	},
    sleep(job,ms) { //返回的是Promise对象
		return new Promise((resolve, reject) => {
			setTimeout(() => {
				resolve(job + ' done!')
			}, ms)
		})
	},
	async Demo() { //await所在的函数必须是 async
		let r=await this.sleep('job1',5000) //await等待异步请求返回结果
		console.log(r)
		r=await this.sleep('job2',3000)
		console.log(r)
		r=await this.sleep('job3',1000)
		console.log(r)
	},
     async types(e){
        let index=e.target.dataset.index
        if(index==null)return//没有点击到任何，直接返回
        let menuIndex=this.data.menuIndex
        let menu=this.data.menus[menuIndex]//当前菜单项
        let oldTypeIndex=menu.typeIndex //原来类型项的索引号
        let change={}//记录有变化的数据
        if(oldTypeIndex!=null)change[`menus[${menuIndex}].types[${oldTypeIndex}].selected`]=false
        change[`menus[${menuIndex}].types[${index}].selected`]=true
        change[`menus[${menuIndex}].typeIndex`]=index//当前类型项的索引号
        this.setData(change)
        let app=getApp() //获取小程序对象
        let type=menu.types[index]
        if(type.list && type.list.length>0) return//原来有数据就直接返回
        let s=await app.request({ url:`${this.host}/by/${type.id}.html`})
        let r,list=[],regex=/href="([^"]+)" title="([^"]+)" class="module-item-pic"><img class="lazyload" data-src="([^"]+)"/g;
		while (r = regex.exec(s)){
            list.push({
                url:r[1],//网址
                title:r[2],//标题
                img:r[3],//图片
            })
        }
        console.log(list)
        this.setData({
            [`menus[${menuIndex}].types[${index}].list`]:list,//保存视频列表数据
        })
    },
  menus(e){ //点击菜单项时执行
		let index=e.target.dataset.index //点击菜单项的索引号
		if(index==0){ //点击的刷新
			return
		}
		let oldIndex=this.data.menuIndex //原来点击菜单的索引号
		let change={ menuIndex:index } //记录有变化的数据
		change[`menus[${oldIndex}].selected`]=false
		change[`menus[${index}].selected`]=true
		this.setData(change)
	},
  onHide(){//页面从前台变为后台执行
    console.log("onHide...")
    this.save()
  },
  onUnload(){//页面销毁时执行
    console.log("onUnload...")
    this.save()
  },
  save(){//保存页面数据
    let data={ ...this.data }
    delete data.__webviewId__
    wx.setStorageSync('films', data)
  },
  onLoad(e){
    //this.Demo()
    //this.regexTest()
    this.host='https://www.gow64.com'
    let data=wx.getStorageSync('films')//获取手机缓存的电影数据
   // console.log(data, data.length, typeof data)
    if(data)this.setData(data)//还原上次保存的页面数据
  },
  play(e){//点击列表时准备去播放视频
    let index=e.currentTarget.dataset.index
    wx.navigateTo({//跳转到播放页面
        url:`player?index=${index}`,
    })
  },
  //正则表达式
  //()表示分组
  // \d 任意一位数字
  // \d+ 表示连续多位任意数字，+修饰符，是个量词，表示前面内容至少出现一次
  //[abc]表示一个字符，可以匹配abc中的任意一个
  //[a-zA-Z]表示任意英文大小写
  //[^a-z]不是小写英文字符的其他字符
  //替换用$1代替第一项$2代替第二项
  //.可以匹配任意字符，除换行 \n

  //正则表达式的量词
  //+修饰至少出现一次；
  //*至少出现0次
  //？1.可以出现一次或0次; 2.出现在其他量词之后，表示非贪婪模式
  //{3,100} 可以出现3到100次
  
  //正则表达式的修饰符，位于正则表达式定界符/.../的后面
  //g - 全局匹配
  //s - 单行模式，使 . 可以匹配任意字符，包括换行\n
  data: {
	menuIndex: 2,
	menus: [{
		name: '[刷新]'
	}, {
		name: '[搜索]',
	}, {
		name: '电影',
		selected: true,
		types: [
			{ name: '动作片', id: 14 },
			{ name: '喜剧片', id: 15 },
			{ name: '爱情片', id: 16 },
			{ name: '科幻片', id: 17 },
			{ name: '恐怖片', id: 18 },
			{ name: '剧情片', id: 19 },
			{ name: '战争片', id: 20 },
			{ name: '纪录片', id: 21 },
		]
	}, {
		name: '电视剧',
		types: [
			{ name: '国产剧', id: 5 },
			{ name: '香港剧', id: 6 },
			{ name: '台湾剧', id: 7 },
			{ name: '欧美剧', id: 8 },
			{ name: '韩国剧', id: 9 },
			{ name: '日本剧', id: 10 },
			{ name: '泰国剧', id: 11 },
			{ name: '海外剧', id: 12 },
			{ name: '短剧', id: 13 },
		]
	}, {
		name: '综艺',
		types: [
			{ name: '大陆综艺', id: 22 },
			{ name: '港台综艺', id: 23 },
			{ name: '欧美综艺', id: 24 },
			{ name: '日韩综艺', id: 25 },
		]
	}, {
		name: '动漫',
		types: [
			{ name: '国产动漫', id: 26 },
			{ name: '日韩动漫', id: 27 },
			{ name: '欧美动漫', id: 28 },
			{ name: '海外动漫', id: 29 },
			{ name: '动漫电影', id: 30 },
		]
	}]
},    

})